home *** CD-ROM | disk | FTP | other *** search
/ Ham Radio 2000 #2 / Ham Radio 2000 - Volume 2.iso / HAMV2 / MISC / HCAL-27 / PRIMENOS.BAS (.txt) < prev    next >
Encoding:
GW-BASIC  |  1997-01-29  |  3.2 KB  |  146 lines

  1. 10  'PRIMENOS - 23 NOV 85 rev. 18 DEC 96
  2. 20  IF EX$=""THEN EX$="EXIT"
  3. 30  CLS:KEY OFF
  4. 40  DIM A(255)
  5. 50  DIM A#(255)
  6. 60  COLOR 7,0,5
  7. 70  '
  8. 80  '.....start
  9. 90  CLS
  10. 100  COLOR 15,1
  11. 110  PRINT " PRIME NUMBERS";TAB(61);"by George C. Murphy ";
  12. 120  COLOR 5,0:PRINT STRING$(80,223);
  13. 130  COLOR 7,0
  14. 140  PRINT TAB(9);
  15. 150  PRINT "A prime number is a number evenly divisible only by itself and"
  16. 160  PRINT TAB(9);
  17. 170  PRINT "the number 1, and not by any other integer (whole number)."
  18. 180  PRINT
  19. 190  PRINT STRING$(80,205);
  20. 200  LOCATE 8:PRINT TAB(25)"PRIME NUMBERS AND FACTORS":PRINT
  21. 210  PRINT TAB(25)"Press number in < > to:"
  22. 220  PRINT
  23. 230  PRINT TAB(25)"< 1 >  Find prime numbers"
  24. 240  PRINT TAB(25)"< 2 >  Find prime factors of a number"
  25. 250  PRINT
  26. 260  PRINT TAB(25)"< 0 >  EXIT"
  27. 270  Z$=INKEY$
  28. 280  IF Z$="0"THEN CLS:RUN EX$
  29. 290  IF Z$="1"THEN 330
  30. 300  IF Z$="2"THEN 850
  31. 310  GOTO 270
  32. 320  '
  33. 330  '.....prime numbers
  34. 340  LOCATE 20,1:INPUT "ENTER: From: first number...";N:NN=N
  35. 350  IF N<1 THEN LOCATE CSRLIN-1:PRINT SPC(40):GOTO 340
  36. 360  INPUT "ENTER:   To: last number....";L
  37. 370  IF N>999999 OR L>999999 THEN 380 ELSE 410
  38. 380  BEEP:PRINT :PRINT "Sorry! I only do numbers less than 1 million!"
  39. 390  GOTO 810
  40. 400  '
  41. 410  '.....calculate
  42. 420  W=0:Q=L-N+1:DIM M(Q+10)
  43. 430  IF N>3 AND (N/2=INT(N/2))THEN N=N+1
  44. 440  IF N<=3 THEN FOR Z=N TO 3:W=W+1:M(W)=Z:NEXT Z:N=5
  45. 450  V=SQR(N):Y=3
  46. 460  VIEW PRINT 3 TO 24:CLS:VIEW PRINT
  47. 470  LOCATE 1,16:PRINT " Countdown....";L-N;
  48. 480  X=N/Y:IF X=1 THEN W=W+1:M(W)=N
  49. 490  IF X=INT(X)THEN 520
  50. 500  IF Y<=V THEN Y=Y+2:GOTO 480
  51. 510  W=W+1:M(W)=N
  52. 520  N=N+2:IF N<=L THEN 450
  53. 530  LOCATE 1,16:COLOR 0,1:PRINT STRING$(30,32)
  54. 540  COLOR 7,0
  55. 550  '
  56. 560  PRINT
  57. 570  U$="####,###"
  58. 580  A=LEN(STR$(L))
  59. 590  Y$="":FOR R=1 TO A:Y$="#"+Y$
  60. 600  IF A>3 AND LEN(Y$)=3 THEN Y$=","+Y$
  61. 610  NEXT R
  62. 620  VIEW PRINT 3 TO 24:CLS:VIEW PRINT:LOCATE 3
  63. 630  PRINT " Prime numbers from";USING Y$;NN;
  64. 640  PRINT " to";
  65. 650  PRINT USING Y$;L;
  66. 660  PRINT " are:"
  67. 670  PRINT STRING$(80,205);
  68. 680  Y=INT(W/10):IF W/10>Y THEN Y=Y+1
  69. 690  LN=4       'default line number
  70. 700  '
  71. 710  FOR Z=1 TO Y
  72. 720  LN=LN+1
  73. 730  PRINT USING U$;M(Z);
  74. 740  FOR X=1 TO 9:C=M(Z+X*Y)
  75. 750  IF C=0 THEN PRINT "":GOTO 790
  76. 760  PRINT USING U$;C;
  77. 770  NEXT X
  78. 780  IF LN=23 THEN GOSUB 1330:LN=0:CLS
  79. 790  NEXT Z
  80. 800  '
  81. 810  '.....return to menu
  82. 820  GOSUB 1330
  83. 830  GOTO 80   'start
  84. 840  '
  85. 850  '.....factors
  86. 860  X=2
  87. 870  LOCATE 20:INPUT "ENTER: Number to be factored ";B#
  88. 880  B#=ABS(B#):W#=B#:Y=0
  89. 890  VIEW PRINT 3 TO 24:CLS:VIEW PRINT
  90. 900  LOCATE 1,16:PRINT " Countdown...."
  91. 910  IF W#/2=INT(W#/2)THEN X=2:GOTO 960
  92. 920  C#=SQR(W#):D=3
  93. 930  M#=INT(C#+2-D)
  94. 940  E#=W#/D:IF E#=INT(E#)THEN X=D:GOTO 960
  95. 950  LOCATE 1,30:PRINT B#-X;"  "
  96. 960  V#=W#/X:IF V#=INT(V#)THEN Y=Y+1:A#(Y)=X:W#=V#:GOTO 910
  97. 970  IF X=2 THEN X=1
  98. 980  IF V#>1 THEN X=X+2:GOTO 910
  99. 990  LOCATE 1,16:COLOR 0,1:PRINT STRING$(30,32)
  100. 1000  COLOR 7,0
  101. 1010  '
  102. 1020  '.....print
  103. 1030  X=LEN(STR$(B#))
  104. 1040  N=CINT(X/3)
  105. 1050  Y$=STRING$(X+N-1,"#")
  106. 1060  IF B#>999 THEN MID$(Y$,X-3,1)=","
  107. 1070  VIEW PRINT 3 TO 24:CLS:VIEW PRINT
  108. 1080  LOCATE 11,34:PRINT CHR$(25)
  109. 1090  LOCATE 10,24:COLOR 0,7:PRINT " Prime factors";
  110. 1100  COLOR 7,0:PRINT " of";:PRINT USING Y$;B#;
  111. 1110  PRINT " are:":PRINT
  112. 1120  T#=1:U=1:FOR Z=1 TO Y
  113. 1130  IF A#(Z)=A#(Z+1)THEN U=U+1:GOTO 1150
  114. 1140  GOSUB 1210:U=1
  115. 1150  NEXT Z
  116. 1160  LOCATE 23,22
  117. 1170  J$=CHR$(34)       'double quote mark
  118. 1180  PRINT "NOTE: ^ signifies ";J$;"to the power of";J$
  119. 1190  LN=14:GOTO 810
  120. 1200  '
  121. 1210  '.....format display
  122. 1220  T#=T#*A#(Z)^U
  123. 1230  Z$="multiplied by":IF T#=B# THEN Z$=""
  124. 1240  U$=STR$(U)
  125. 1250  COLOR 0,7
  126. 1260  LOCATE CSRLIN,35-LEN(Y$):PRINT USING Y$;A#(Z);
  127. 1270  COLOR 7,0
  128. 1280  PRINT " ^";U$;" =";
  129. 1290  PRINT USING Y$;T#;
  130. 1300  PRINT " ";Z$
  131. 1310  RETURN
  132. 1320  '
  133. 1330  'HARDCOPY
  134. 1340  GOSUB 1450:LOCATE 25,2:COLOR 14,6
  135. 1350  PRINT " Press 1 to print screen, 2 to print screen & ";
  136. 1360  PRINT "advance paper, or 3 to continue.";:COLOR 7,0
  137. 1370  Z$=INKEY$:IF Z$="3"THEN GOSUB 1450:RETURN
  138. 1380  IF Z$="1"OR Z$="2"THEN GOSUB 1450:GOTO 1400
  139. 1390  GOTO 1370
  140. 1400  FOR QX=1 TO 24:FOR QY=1 TO 80
  141. 1410  LPRINT CHR$(SCREEN(QX,QY));
  142. 1420  NEXT QY:NEXT QX
  143. 1430  IF Z$="2"THEN LPRINT CHR$(12)
  144. 1440  GOTO 1340
  145. 1450  LOCATE 25,1:PRINT STRING$(80,32);:RETURN
  146.